/**
 * @file codeforces/1671/d/main.cpp
 * @brief
 * @see
 * @author Ruiming Guo (guoruiming@stu.scu.edu.cn)
 * @copyright 2022
 * @date 2022/5/15 11:53:27
 **/

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = (a); i < (int)(b); ++i)
typedef long long ll;
typedef vector<int> vi;
int main() {
  // High rating and good luck!
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int tc;
  cin >> tc;
  while (tc--) {
    int n, x;
    cin >> n >> x;
    vector<int> a(n);
    rep(i, 0, n) cin >> a[i];
    ll ans = 1e18, cur = 0;
    rep(i, 0, n - 1) cur += abs(a[i] - a[i + 1]);  // 原始 f
    // 在此之后 cur 是只读的
    rep(_, 0, 2) {            // 对应2, 3，正着来一遍，反着来一遍
      ll mn = abs(a[0] - 1);  // mn 保存了放置 1 的最小花费
      // I. 把 x 放到 a 的开头，把 1 放到 x 前边
      ans = min(ans, cur + abs(a[0] - x) + (x - 1));
      // II. 把 x 放到 a 的中间
      // 对每一个下标 i
      rep(i, 0, n - 1) {
        // 把 x 放到 a[i] 与 a[i+1] 之间
        ans = min(ans, cur + mn - abs(a[i] - a[i + 1]) + abs(a[i] - x) +
                           abs(a[i + 1] - x));
        // 把 x 和 1 放到 a[i] 与 a[i+1] 之间
        ans = min(ans, cur - abs(a[i] - a[i + 1]) + abs(a[i] - x) +
                           abs(a[i + 1] - 1) + (x - 1));
        // 更新放置 1 的最小花费
        mn = min(
            mn, 0LL - abs(a[i] - a[i + 1]) + abs(a[i] - 1) + abs(a[i + 1] - 1));
      }
      // III. 把 x 放到 a 的末尾，1 放在 x 前边的最佳位置
      ans = min(ans, cur + mn + abs(a.back() - x));
      // **神来之笔**：考虑把 x 放在 1 之前的情况
      reverse(a.begin(), a.end());
    }
    cout << ans << endl;
  }
  return 0;
}
